#ifndef AGORA_IBUFFER
# define AGORA_IBUFFER

template<typename A>
class IBuffer
{
public:
	virtual int Write(A *data, unsigned int size) = 0;
	virtual const A& operator[](unsigned int i) = 0;
	virtual A*  Read(unsigned int size) = 0;
	virtual int GoForward(unsigned int size) = 0;
	virtual unsigned int Size() = 0;
	virtual unsigned int SizeMax() = 0;
	virtual void Clean() = 0;
};

#endif